--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / tests / backend / test_security_path_and_backup.py
Displaying Raw • Download
tests/backend/test_security_path_and_backup.py e5756d7ab065475a18acdcafc008a767fcff87e0 (e5756d7a) Text, 865 B
T8b949e# SPDX-License-Identifier: 0BSD
T8b949e"""Path safety: backup/snapshot delete must not escape storage directories."""
Tff7b72import T7ee787os
Tff7b72import T7ee787pytest
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787database Tff7b72import Te6edf3Database
Tff7b72def Td2a8fftest_delete_database_backup_rejects_path_outside_storageTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3db_path Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6fft.dbTa5d6ff"
Te6edf3db Tff7b72= Te6edf3DatabaseTb4b4b4(Tffa657strTb4b4b4(Te6edf3db_pathTb4b4b4)Tb4b4b4)
Te6edf3dbTff7b72.Td2a8ffinitializeTb4b4b4(Tb4b4b4)
Te6edf3storage Tff7b72= Tffa657strTb4b4b4(Te6edf3tmp_pathTb4b4b4)
Te6edf3osTff7b72.Td2a8ffmakedirsTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3storageTb4b4b4, Ta5d6ff"Ta5d6ffdatabase-backupsTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Tf85149ValueErrorTb4b4b4, Te6edf3matchTff7b72=Ta5d6ff"Ta5d6ffInvalid pathTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3dbTff7b72.Td2a8ffdelete_snapshot_or_backupTb4b4b4(
Te6edf3storageTb4b4b4,
Ta5d6ff"Ta5d6ff../../../etc/passwdTa5d6ff"Tb4b4b4,
Te6edf3is_backupTff7b72=Tff7b72TrueTb4b4b4,
Tb4b4b4)
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Tf85149ValueErrorTb4b4b4, Te6edf3matchTff7b72=Ta5d6ff"Ta5d6ffInvalid pathTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3dbTff7b72.Td2a8ffdelete_snapshot_or_backupTb4b4b4(
Te6edf3storageTb4b4b4,
Ta5d6ff"Ta5d6ff../database-backups_old/secret.zipTa5d6ff"Tb4b4b4,
Te6edf3is_backupTff7b72=Tff7b72TrueTb4b4b4,
Tb4b4b4)
Te6edf3dbTff7b72.Td2a8ffclose_allTb4b4b4(Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────